Filtering is a commonly performed operation in electronic circuitry, and has various applications such as reduction of out of band noise and reduction of interference. A finite impulse response (FIR) filter is a common type of filter, where the filter output is a weighted sum of time-delayed samples of the filter input. FIR filters are relatively simple to implement, especially in adaptive filtering systems where the filter transfer function (i.e., the weights) are controlled by a control loop. The control for adaptive filtering usually entails minimization of an error signal derived from the filter output.
FIG. 1 shows a common approach for implementing FIR filters. On FIG. 1, the filter input x(t) is provided to a delay line including delay elements 104, 106, 108, etc. in series. Each delay element introduces a time delay, so the output of delay element 104 is x(t−T1), the output of delay element 106 is x(t−T1−T2), and the output of delay element 108 is x(t−T1−T2−T3), etc. Here T1, T2, and T3 are the delays introduced by delay elements 104, 106, and 108 respectively. In the usual case where T1=T2=T3=T, the outputs of elements 104, 106, and 108 are x(t−T), x(t−2T), and x(t−3T) respectively. Coefficients 112, 114, and 116 (having values C1, C2, and C3 respectively) are provided to multipliers 118, 120, and 122 respectively. Multipliers 120 and 122 receive inputs from delay elements 104 and 106 respectively, as shown. The outputs of multipliers 118, 120, and 122 is provided to a summing junction 124, which provides the sum of the multiplier outputs as a filter output y(t). In the example of FIG. 1, y(t)=C1x(t)+C2x(t−T)+C3x(t−2T), which shows that the filter of FIG. 1 is a FIR filter. FIR filters having this architecture are known as delay-line filters, since delay elements are connected in series to provide the various delays of the filter. It is convenient to define a tap as being a unit of an FIR filter, so in the example of FIG. 1, delay element 104, coefficient 114 and multiplier 120 together make up one of the filter taps. Three taps are shown on FIG. 1, but FIR filters can have any number of taps.
Although the delay-line approach of FIG. 1 is simple and commonly employed, it has disadvantages which are particularly noticeable for filters having a large number of taps. In particular, noise, offsets and other non-idealities tend to accumulate as a signal propagates in succession through a long series of delay elements. In order to alleviate this problem, some FIR filters are implemented with the track and hold architecture shown in FIG. 2. On FIG. 2, the filter input x(t) is provided to track and hold taps 202, 204, and 206. Track and hold taps 202, 204, and 206 provide corresponding outputs Y1, Y2, and Y3 to multipliers 118, 120, and 122 respectively. Coefficients C1, C2 and C3 are provided to a shuffler 208, which has outputs X1, X2, X3. The shuffler outputs X1, X2 and X3 are provided to multipliers 118, 120 and 122 respectively. The outputs of multipliers 118, 120, and 122 are received by summing junction 124 which provides the sum of the multiplier outputs as the filter output y(t).
The track and hold taps (i.e., taps 202, 204, and 206 on FIG. 2) have an output that remains constant except when the tap is triggered to set its output to a sample of the input x(t). These trigger inputs are shown on FIG. 2 as phases φ1, φ2, and φ3. The table of FIG. 3 shows operation of the filter of FIG. 2 over time. Column “t” of FIG. 3 shows time, from 1 to 9. Column “φ1” of FIG. 3 show the phase φ1 for tap 202. Tap 202 is periodically triggered at times 1, 4, 7, etc., and this triggering is indicated by “H” in column “φ1” of FIG. 3. Column “Y1” of FIG. 3 shows the output Y1 of tap 202, which remains constant except when triggered to be updated to the current x(t) value. Thus Y1 (t) is as shown on FIG. 3. Similarly, columns “φ2” and “φ3” show phases φ2 and φ3 for taps 204 and 206 respectively. Thus tap 204 is periodically triggered at times 2, 5, 8, etc., and tap 206 is periodically triggered at times 3, 6, 9, etc, as indicated in these columns. Accordingly, the outputs Y2(t) and Y3(t) are as shown in columns “Y2” and “Y3” of FIG. 3. In this example, the phases of the three track and hold taps are evenly spaced in time, which is typical.
As a result of this system for tap triggering, the three tap outputs Y1, Y2, and Y3 at each time t include the current input x(t), a 1-unit delayed sample x(t−1) and a 2-unit delayed sample x(t−2). However, the correspondence between Y1, Y2, Y3 and x(t), x(t−1) and x(t−2) is not fixed. Instead, this correspondence is a permutation which varies periodically in time. In order to provide a filter having a time-independent transfer function, shuffler 208 sets its outputs X1, X2, X3 at each time to a corresponding permutation of its inputs C1, C2, C3, as shown in the “X1”, “X2” and “X3” columns of FIG. 3. The rightmost column shows the filter output (X1Y1+X2Y2+X3Y3) which is given by C1x(t)+C2x(t−1)+C3x(t−2). Thus the filter of FIG. 2 operating according to FIG. 3 is an FIR filter having a time-independent transfer function. The process of permuting the tap coefficients to provide a time-independent filter transfer function is referred to as tap weight rotation, and is applicable to filters having any number of taps.
There are various known methods for implementing shuffler 208. For example, switching can be used (e.g., in a crossbar switch) to relate X1-3 to C1-3. It is also possible to set up a delay line for the coefficients where inputs to the delay line cycle periodically through C1, C2, and C3. By taking X1, X2, and X3 from delay line outputs, the operation of shuffler 208 can be implemented. Such a coefficient delay line can be either an analog delay line or a digital delay line.
The FIR filter of FIG. 2 does not suffer from the problem of noise, offset and non-ideality accumulation in a delay line, since no delay line is present. FIR filters such as shown in FIG. 2 are known in the art. For example, U.S. Pat. No. 5,931,898 considers filters of this type, as does U.S. Pat. No. 5,563,819. However, the FIR filter of FIG. 2 suffers from certain problems which are not considered in these references. More specifically, the filter of FIG. 2 should ideally compute a tap term such as C2x(t−1) in a manner that is not affected by tap weight rotation. However, physical components used to implement filters are not perfectly ideal, and as a result of multiplier gain variations and/or component offsets, the computed result for a term such as C2x(t−1) will typically be affected by tap weight rotation. For example, this term is provided by tap 204 and multiplier 120 on FIG. 2 at times 3, 6, 9, etc., is provided by tap 206 and multiplier 122 at times 4, 7, etc., and is provided by tap 202 and multiplier 118 at times 5, 8, etc. Unless these taps and multipliers are perfectly identical, the tap weight rotation will lead to an undesirable time-variation of the computed result corresponding to C2x(t−1).
Accordingly, it would be an advance in the art to provide a finite impulse response filter having tap weight rotation that can compensate for non-identical components.